package de.dhbw.karlsruhe.picsim.model.actions;

import de.dhbw.karlsruhe.picsim.util.Bits;
import org.jetbrains.annotations.NotNull;

/**
 * Created by IntelliJ IDEA.
 * User: goesen
 * Date: Apr 12, 2010
 * Time: 11:41:40 PM
 */

/**
 * Eine Action die den ProgramCounter verändert und somit zu einer Runde nOp führt
 */
public interface ModifyProgramCounterAction extends PicAction {
    /**
     * Momentan sind 3 Fälle bekannt:
     * <p/>
     * 1. Ein Call oder Goto: Dabei werden die unteren 11 Bits überschrieben. {@link Bits#getLength()}==11
     * <p/>
     * 2. Schreibender Zugriff aufs PCL Register: Dabei werden die unteren 8 Bits überschrieben
     * <p/>
     * 3. Überspringen eines Befehls mithilfe von BTFSC und BTFSS. Dabei wird nichts überschrieben
     * {@link Bits#getLength()}==0
     * <p/>
     * Für die Fälle 1 und 3 ist der aktuelle Befehl verantwortlich, für Fall 2 die CPU, dh. Fall 2 wird nicht durch
     * dieses Interface abgedeckt
     *
     * @return die von unten einzuschiebenen Bits
     * @see Bits#getLength()
     */

    @NotNull
    Bits getLowBits();
}
